5. L’approccio di correzione probabilistica
 
 
Sintesi: sono descritte, in sintesi, la metodologia e le varie fasi, da eseguire in modo gerarchico dall'utente, per la correzione effettuata secondo l'approccio probabilistico

 

Con questo metodo si ottiene la correzione di un file di dati con l'approccio di tipo probabilistico: l'imputazione delle variabili necessarie a far si che un record trovato errato in base alle regole di incompatibilità, passi tutte le regole, dipende dalla probabilità, sia riguardo alle variabili, se più variabili possono essere prese in considerazione, sia riguardo ai valori da assegnare alle variabili, estratti dai donatori. Da Barcaroli et al (1999) sono di seguito descritti i principi su cui la tecnica si basa.

L'approccio probabilistico non impone la necessità di definire a priori, per ogni situazione di errore, l'elenco delle azioni da intraprendere per eliminare gli errori dai dati: l'esperto statistico deve limitarsi a definire le situazioni di errore, demandando ad un prefissato algoritmo il compito di riportare il record ad una situazione di correttezza.
L'approccio probabilistico, sviluppato in CONCORD, ha il suo punto di riferimento nella cosiddetta metodologia Fellegi-Holt, esposta nell'articolo "A systematic approach to automatic edit and imputation" di I.Fellegi e D.Holt, pubblicato nel 1976 sul Journal of the American Statistical Association.

Un piano probabilistico è composto, quindi, da regole di incompatibilità, che seguendo la terminologia di Fellegi e Holt, sono chiamate edit in forma normale. Un edit in forma normale è costituto dalla congiunzione di due o più condizioni sui valori di variabili del record: l'edit è attivato, in un dato record, quando sono verificate simultaneamente tutte le condizioni in esso definite. La parte SE di una regola di incompatibilità, cioè quella che esprime la situazione di errore, può corrispondere a uno o più edit in forma normale.

L'algoritmo che elimina gli errori provvede a determinare, per ogni record e per ogni situazione di errore, quali variabili modificare, in modo da avere la certezza di eliminare gli errori individuati e, soprattutto, di non introdurne altri nel record, minimizzando nel contempo il numero di variabili modificate.

Gli edit in forma normale definiti dall'esperto, detti edit espliciti, sono sufficienti ad individuare la presenza di errori all'interno dei record di un file, ma non a garantire una imputazione di valori corretta ed ottimale. Infatti, la scelta di quali variabili modificare e di quali nuovi valori assegnare, è condizionata dai vincoli di correttezza - non introdurre nuovi errori nel record - e di minimalità - modificare il minor numero possibile di variabili. A tal fine, occorre considerare anche i cosiddetti edit impliciti, derivabili da quelli espliciti ed individuare così l'insieme minimo e completo degli edit.

La metodologia di Fellegi-Holt prevede che, una volta definiti gli edit espliciti, questi siano analizzati, sia per scoprire la presenza di contraddizioni e/o ridondanze, che per derivare tutti gli edit impliciti in essi contenuti.

La fase dell'analisi e della derivazione degli edit, produce un insieme di regole che ha le seguenti caratteristiche:

La derivazione degli edit impliciti nell'ambito della metodologia Fellegi-Holt, rappresenta un'operazione altamente critica: infatti la generazione degli edit impliciti richiede un numero di operazioni che è esponenziale rispetto al numero di edit espliciti. Talvolta, la derivazione degli edit impliciti risulta impossibile, anche ricorrendo ad euristiche che permettono di limitare a priori il numero delle operazioni necessarie; in questo caso si può ripartire l'insieme iniziale di edit suddividendo la fase di correzione in tante sottofasi quanti sono i sottoinsiemi di edit cosi definiti.

Prima fase, nella stesura del piano di incompatibilità, è quella della definizione delle variabili, eventualmente delle liste di variabili, e delle regole di incompatibilità.
 
 

5.1. La fase di definizione
 
 



Figura 5.1 - Funzioni di definizione

5.1.1. Definizione delle variabili

Propedeutica ad ogni altra funzione è la definizione delle variabili, cioè dei campi del record da sottoporre a controllo ed eventuale correzione. Nell'approccio probabilistico sono trattate variabili categoriche o qualitative con valori codificati da 0 a 9999. Per definire le variabili è necessario avere il tracciato record con indicate le posizioni iniziali e le lunghezze di ogni variabile da trattare.

Nei record di input le variabili da trattare devono essere completate con 0 a sinistra del valore per tutta la lunghezza del campo; quindi i campi più lunghi di un carattere devono essere completati con zeri iniziali.

E' necessario definire solo le variabili che vogliamo sottoporre a controllo; il resto del record verrà ricopiato senza modifiche.
Il numero massimo di variabili definibili è 500.
Per ogni variabile è necessario indicare:

Esempi di variabili: ETA posizione 1, lunghezza 1;
SESSO posizione 5, lunghezza 1;
REDDIT posizione 345, lunghezza 3.
Il programma controlla che le posizioni insieme alle lunghezze non si sovrappongano.
Il nome, la posizione, la lunghezza e i domini di una variabile possono essere modificati scegliendo la variabile da modificare, modificandola dove necessario e selezionando "add/mod" dopo la modifica.
La cancellazione di una variabile si effettua scegliendola dalla lista e selezionando "delete"; con la cancellazione si perdono anche i relativi domini.
Con "clear" si annullano le modifiche che riguardano la variabile.

Definita una variabile bisogna passare all'inserimento dei valori dei domini di una variabile selezionando "DOMINI ".
Per dominio di una variabile si intendono i valori che la variabile può assumere, ossia le possibili risposte ad un quesito del questionario dell'indagine in oggetto, per un massimo di 700; l'eventuale ammessa assenza di risposta "blank" va indicata con "B". Nella fase di inserimento della variabile, scritti il nome la posizione e la lunghezza, bisogna definire i valori del dominio, espressi in forma di intervallo "da a".

Se per esempio una qualsiasi variabile può' assumere i valori 1,5,8,9 ed è ammessa la risposta mancante:

Il programma controlla che il dominio di una variabile non si sovrapponga con gli altri domini della stessa variabile, e non superi la lunghezza definita per la variabile stessa.

Per aggiungere ulteriori domini ad una variabile:

Per modificare il dominio di una variabile: Per eliminareun dominio di una variabile: Con "clear" si annullano le modifiche del dominio selezionato.

Terminato l'inserimento o la modifica dei domini la variabile viene aggiornata scegliendo "end".

Dal menu a tendina "File" (vedi fig. 5.2):

View" visualizza tutte le variabile preesistenti ordinandole per posizione
 


Fig. 5.2 La gestione delle variabili

5.1.2. Definizione delle liste di variabili

Le liste di variabili , utili per agevolare la scrittura delle regole, sono insiemi di variabili la cui risposta nel questionario può mancare o non mancare in funzione del valore di un'altra variabile.

Tipicamente appartengono ad una lista tutte le variabili di una sezione del questionario che deve essere compilata o no sulla base di un quesito "filtro" precedente, oppure sezioni di questionario che ammettono molte risposte multiple.
Scrivendo una sola regola, che indica incompatibilità tra una variabile e la variabile di lista, saranno automaticamente generate, nella fase di controllo (vedi §5.2.1), tante regole quante sono le variabili indicate nella lista se la lista è stata definita OR, o una regola che comprende tutte le variabili della lista se questa è stata definita AND.

Esempio:
poniamo che se l'età è minore di 14 anni non deve essere compilata una sezione del questionario che comprende sei variabili; dovremmo scrivere sei regole una tra ETA e VAR1, un'altra tra ETA e VAR2, …e infine una tra ETA e VAR6; invece creando una lista che chiameremo "LISETA" comprendente le variabili precedentemente definite VAR1, VAR2... VAR6 potremo scrivere una sola regola (cfr. definizione delle regole) tra ETA e LISETA:

ETA(0-13) LISETA< )

Se la variabile LISETA è stata dichiarata OR, definizione più comune per le variabili lista, saranno automaticamente generate nella fase di controllo delle regole, sei regole di incompatibilità, una tra la variabile ETA e la variabile VAR1, una tra la variabile ETA e la variabile VAR2, e così via.

Se invece la variabile LISETA è stata dichiarata AND verrà automaticamente generata, nella fase di controllo delle regole, una sola regola di incompatibilità, tra variabile ETA e tutte le variabili elencate in LISETA.

Una lista può comprendere al massimo 100 variabili.

Per definire una lista:

vengono mostrate tutte le variabili precedentemente definite la cui risposta può mancare, cioè che ammettono "B" nel dominio (vedi  §5.1.1).

Per aggiungere variabili ad una lista:

Per cancellare variabili da una lista: Per modificare una lista: Per cancellare una lista: Con "clear" si annullano le modifiche alla lista.
Dal menu a tendina "file" sono possibili le seguenti scelte:


Fig. 5.3 La gestione delle liste





5.1.3. Definizione delle regole di incompatibilita'

Le regole di incompatibilità o "edit" scritte dall'utente, per una massimo di 2000, sono chiamate "insieme minimale" e descrivono l'incompatibilità tra le variabili considerate nei loro sottodomini.
L'esperto dell'indagine deve definire, quindi, quali sono le incompatibilità possibili nelle risposte ai quesiti del questionario e trascriverle sotto forma di regola, mettendo, se gli è più consono, in forma negativa o "diverso da" una risposta possibile o compatibile.

Ad esempio se in un questionario lo stato civile "non libero" è compatibile solo con l'età maggiore di 14 anni e dobbiamo scrivere una regola per controllare le risposte diremo

se stato civile non libero ed età > 14 anni

per considerare compatibili le risposte a quesiti, trasformandola poi in incompatibilità scrivendo

se stato civile non libero ed età 0-13 anni.

Nell'approccio probabilistico, vengono trattate solo variabili di tipo categorico, anche se codificate numeriche, con soli controlli di uguaglianza, e non sono possibili operazioni di tipo aritmetico tra le variabili; inoltre bisogna considerare sottoinsiemi del dominio di una variabile poiché, se ne considerassimo l'intero dominio, la regola sarebbe sempre verificata qualsiasi fosse il valore della variabile a confronto.
Non bisogna scrivere regole per controllare il dominio delle variabili, dato che questo controllo viene effettuato e corretto automaticamente dal programma.
Se una regola inizia con un asterisco "*", questa viene considerata un commento.
Una regola può contenere un massimo di 16 variabili, e ogni variabile della regola può avere al massimo 100 valori di sottodominio.
Ogni regola deve essere così interpretata:

Se è vero V1(sd1 o ..sdn) ed è vero V2(sd1 o ..sdn) ...ed è vero Vn(sd1 o ..sdn) alloral'incompatibilità è vera.

Le variabili all'interno di una regola esprimono contemporaneità (AND) mentre i valori dei sottodomini tra parentesi esprimono alternatività (OR).

Esempio:
consideriamo che se l'età (descritta dalla variabile ETA) è minore di 14 anni e lo stato civile (descritto dalla variabile STACIV) è libero (risposta 1 al quesito relativo, che ammette le risposte possibili 1-5) la risposta è esatta;

in forma negativa diremo se se l'età è minore di 14 anni e lo stato civile è "diverso da" libero "1" allora l'incompatibilità è verificata;

scriveremo quindi la regola:

ETA(0-13) STACIV<1)

oppure

ETA<14-110) STACIV(2,3,4,5)

Quindi:

Per inserire una regola: Alla fine scegliere "add/mod";

In caso di errore usare il tasto "undo".

Con "clear" si annulla l'intera operazione.

Per commentare una regola:

Per cancellare una regola: Per modificare una regola: Da menu a tendina "file":



Fig. 5.4 La maschera per la gestione delle regole






5.2. Le funzioni

5.2.1. Controllo delle regole
 



Fig 5.5 Le funzioni per l'approccio probabilistico

Eseguita la fase di definizione delle variabili, delle liste di variabili e delle regole di incompatibilità, si deve scegliere la funzione di "Controllo delle regole".
La fase di controllo delle regole scritte dall'utente, ossia dell'insieme minimale, verifica eventuali errori di sintassi, incongruenze e ridondanze delle regole, accorpa regole che hanno le stesse variabili con domini diversi solo per un valore, esplode le liste creando tante regole quante sono le variabili nella lista se definita in "OR", segnala le modifiche effettuate, fermando il processo se esistono regole contraddittorie, cioè regole in contrapposizione tra loro, o regole che per accorpamenti successivi rimangono con una sola variabile, o regole che per una variabile hanno indicato tutto il dominio.

Gli errori di sintassi nelle regole si possono verificare se le regole vengono corrette, o se vengono eliminate o modificate variabili o liste, mentre le incompatibilità , le ridondanze e le incoerenze sono sempre possibili durante la scrittura delle regole stesse, e verificabili solo con un processo iterativo.

Alla fine del passaggio di controllo delle regole viene mostrata la lista delle segnalazioni di errori o avvertimenti, quale ad esempio "edit ridondante". Dalla maschera è possibile uscire con "F3" e, se il passaggio è andato a buon fine, sarà possibile eseguire la funzione di "check dei dati", la "derivazione dell'insieme completo" e, nel modulo di definizione delle regole, la funzione di "export per deterministico" (vedi §5.1.3).

In questa fase vengono registrati tra gli altri i seguenti file esterni:

Le segnalazioni di errore o di avvertimento, riferite al file "MINSET.dat", comprendono nella numerazione anche i commenti.

E' importante e opportuno riciclare il passo di controllo ponendo in input il file generato "regole_da_minset", rinominandolo "REGOLE.dat"; questo riciclo va effettuato fino a che non si verifichino più ulteriori accorpamenti delle regole derivate dalla precedente esecuzione della funzione di controllo delle regole.

Dopo il passo di controllo, nel quale vengono eseguiti i programmi "contreg.exe" e "genreg.exe", avendo i dati di input a disposizione è opportuno, prima di eseguire la fase di derivazione degli edit impliciti, eseguire la fase di controllo o "CHECK" dei dati di input o dati grezzi.
 
 

5.2.2. Check dei dati

Selezionando la funzione "check dei dati" sono possibili tre scelte:

1. CHECK


Fig. 5.6 La maschera per la funzione di check dei dati

La scelta della funzione di controllo o "Check" dei dati di input, o dati grezzi, dovrebbe essere eseguita prima della fase di derivazione dell'insieme completo, per eliminare dall'insieme degli edit espliciti o "insieme minimale" scritti dall'utente, eventuali errori di definizione delle variabili, sia nei domini che rispetto al tracciato di registrazione, o errori di scrittura delle regole dal punto di vista logico.

Il check dei dati, separa i dati grezzi in esatti ed errati, verificando per i record di input, l'incompatibilità descritta nelle regole dell'insieme minimo tramite il file esterno codificato "MINICE.dat" scritto nella fase di controllo delle regole.

Durante la fase di check, per ogni record in esame se anche una sola regola di incompatibilità è vera il record viene registrato tra gli errati, e viene registrato un record nel file "ERRORI.dat" con il numero della regola errata; in questo caso si può vedere la regola corrispondente al numero tramite la funzione "Vista delle regole in uso" (vedi punto 2).

A fine passaggio di check, segnalato da apposito messaggio, vengono mostrati i contatori dei record letti, esatti ed errati e una tabella (vedi  fig. 5.7) con elencate le regole violate e gli eventuali dati fuori dominio. Tutti i riferimenti numerici delle regole vanno fatti con il file MINSET.dat (vedi punto 2, "Vista delle regole in uso") ove sono elencate e numerate anche le regole generate automaticamente, nella fase di controllo delle regole, che si riferiscono al "fuori dominio" delle variabili.

L'analisi di questi risultati permette all'utente di verificare gli eventuali errori di definizione e permette, inoltre, di verificare se i dati di input sono affetti da errori sistematici che dovrebbero essere eliminati, con approccio diverso, prima della correzione probabilistica.

Infatti è importante controllare attentamente le regole attivate con troppa frequenza, indice di errore di definizione, o di registrazione, o di risposta ad un quesito affetto da errore sistematico.

Una distribuzione casuale, "a pioggia", delle regole violate indica che il piano di check è ben strutturato, e che i dati non sono affetti da errori non stocastici.

Nel passo di check, che esegue il programma esterno "genckf", vengono registrati nella cartella di progetto i seguenti file:

Il file esterno di input per il passo di check, deve essere scelto tramite l'apposita maschera evidenziata al momento della scelta della funzione. Una volta scelta la cartella e selezionato il file con "apri", o cliccando due volte sul nome del file stesso, viene aggiornato, nella cartella di progetto, il file "tabfile.prm" che contiene il nome dei file che saranno utilizzati nel passo di check e nel successivo passo d'imputazione.
I record del file di input devono essere registrati in ASCII e con lunghezza e campi fissi (vedi cap.3).

Si ricorda che per eseguire il check dei dati non è necessario aver effettuato la funzione di "derivazione delle regole implicite".

Fig. 5.7 La tabella delle regole attivate nel check dei dati
2. VISTA REGOLE in USO
I contatori e la tabella degli edit espliciti attivati vengono mostrate automaticamente alla fine dell'esecuzione del programma di check dei dati.
E' comunque possibile rivederli scegliendo la funzione "Statistica degli errori" che mostra, in successione, prima i contatori dei record esatti ed errati e poi la tabella degli edit espliciti attivati con le variabili fuori dominio (vedi fig. 5.7)
 
 

5.2.3. La derivazione degli edit impliciti
 



Fig. 5.8 La funzione di derivazione dell'insieme completo
 

La scelta della funzione "Esegue derivazione", da "Derivazione insieme completo", effettua la derivazione delle eventuali regole implicite dalle regole esplicite scritte dall'utente, e sottoposte al passo di controllo detto "insieme minimale", ed è indispensabile per un corretto passo di correzione dei dati errati o imputazione.

La derivazione è un programma che per ogni variabile, detta "generatrice", verifica se le n regole che la contengono, raggruppate a 2,3,...a n ne coprono l'intero dominio della variabile, e in questo caso, se le altre variabili contenute nelle regole generano una nuova regola che viene detta "implicita". Se questa regola non risulta compresa nelle altre regole dell'insieme minimo viene detta "essenzialmente nuova", diventa parte dell'insieme delle regole, e rientra nel passo che viene riciclato.

Non è possibile quantificare a priori il tempo, talvolta anche di molte ore, necessario alla derivazione dell'insieme completo.

In teoria per ogni variabile sarebbe necessario un numero di combinazioni pari a 2**n-n-1, ove n è il numero delle regole che contengono la variabile in esame; e questo moltiplicato per tutte le variabili definite dall'utente che ad n chiudono il dominio. E' stato necessario introdurre dei tagli, alcuni suggeriti dalla stessa metodologia di Fellegi-Holt, altri sviluppati con algoritmi che permettono di ridurre il numero delle combinazioni, quali ad esempio le "classi di equivalenza" che raggruppano in una stessa classe tutte le regole che, per la variabile in esame, hanno lo stesso dominio.

In questa fase vengono registrati nella cartella di progetto i seguenti file esterni:

Solo dopo il passo di derivazione, nel quale vengono eseguiti i programmi esterni "derivaz", "decoreg" e "gengen", è possibile effettuare la fase di correzione.

Se il passo di derivazione si ferma per "edit degenere" o "edit contraddittori", bisogna riferirsi al file "GENER.dat" e al file "COMPLETO.dat" per capire quali regole sono tra loro incompatibili considerando che "GENER.dat" contiene un record per ogni regola con numeri indicanti:

i numeri di regola negativi (es.: -34) indicano che la regola è stata cancellata nei cicli di derivazione, e quindi bisogna considerare le regole successive al -9999 che hanno derivato la regola in esame e così via.

Le regole esplicite hanno il record corrispondente su "GENER.dat" con tutti 0.

Se il passo di derivazione è andato a buon fine viene resa possibile la funzione "Correzione dati".
Scegliendo "display derivazione" si ha una lista dei passi effettuati durante la derivazione.
Scegliendo "insieme completo" vengono mostrate tutte le regole, numerate, che formano l'insieme delle regole sia esplicite che implicite.
 
 

5.2.4. La correzione dei dati
 
 



Fig. 5.9 La funzione di correzione dei dati




5.2.4.1. Impostazione delle variabili fisse

Questa funzione, propedeutica alla fase d'imputazione, permette di condizionare la correzione di singole variabili con l'impostazione di alcuni parametri.

Infatti è possibile:

Per ogni variabile selezionata è possibile: Per ogni variabile impostata è possibile aggiungere note o commenti.

Con "exit" si esce senza salvare le modifiche.
Con "save and exit" si esce dalla funzione e si salvano le modifiche anche sul file esterno "VARFIX.dat".
Con "import" si importano variabili da un file esterno formattato del tipo "VARFIX.dat".

5.2.4.2. Impostazione dei pesi

Con questa funzione è possibile variare la distribuzione dei pesi, quale risulta dal passaggio di check, per i domini di variabili opportunamente scelte, in modo che sia applicata, in casi particolari, una distribuzione scelta dall'utente.

Il programma di correzione, nel caso debba imputare una variabile con un valore che debba essere forzato perché non trovato nel serbatoio donatori, oppure se la variabile è stata definita "marginale" (vedi § 5.2.4.1), prenderà i valori da imputare dalla distribuzione delle frequenze ottenute nel passaggio di check e registrate sul file "FREQUEN.dat".

Con la funzione "Pesi" è possibile modificare questa distribuzione all'interno dei valori del dominio di una variabile. Il programma mostra l'intera distribuzione delle frequenze nella "Lista totale dei pesi in %".

Per creare una variabile peso:

Per cancellare una variabile peso: Da menu a tendina"File": Con "exit" si esce senza salvare le modifiche;
Con "save and exit" si esce e si salvano le modifiche sul file esterno "PESI.dat";
Con "import" si importano pesi da un file esterno "PESI.dat" selezionato dall'utente.
5.2.4.3. Impostazione dei parametri di esecuzione dell'imputazione

Con questa funzione si impostano i parametri che condizionano l'intera esecuzione del passo di imputazione, contrariamente alle impostazioni del paragrafo 5.2.4.1, che riguardano le singole variabili.

I parametri sono:

impostato all'esecuzione di tutti e tre i tipi di imputazione;
con questo parametro si può ridurre la sequenza dei tentativi di imputazione alle sole imputazioni allargata e sequenziale, oppure ancora più restrittivamente, alla sola imputazione sequenziale. Cambiare il tipo di imputazione può servire a diminuire il tempo di esecuzione del passaggio di correzione in fase di messa a punto del progetto. impostato a SI, scelta consigliata.
Con NO si elimina la produzione delle statistiche di correzione. impostato a 2000; può essere diminuito;
notare che il serbatoio dei donatori viene rinnovato al cambio del valore delle eventuali variabili chiave. impostato a 99999 (numero di donazioni senza limite).
Si può diminuire e serve a limitare le donazioni che un singolo record esatto può effettuare.

Con 'Save and exit' si registrano i parametri, nella cartella di progetto nel file PARM.dat, e si esegue il programma di correzione.

Se sono state definite variabili fisse di tipo "chiave" il programma, prima dell'esecuzione del passo di imputazione, domanda all'utente se deve ordinare il file degli ESATTI ed il file degli ERRATI, ordinamento che può essere evitato se i dati sono già ordinati per le suddette variabili.
 
 

5.2.4.4. Imputazione

La fase di correzione dei dati, o imputazione, trasforma i record errati, output della fase di controllo o check, in record corretti, utilizzando l'algoritmo del minimo cambiamento, una delle basi della metodologia di Fellegi-Holt.

Per ogni record errato, tramite l'insieme completo "MAXICE.dat", generato nella fase di derivazione degli edit impliciti, vengono verificate le regole di incompatibilità, e si cerca il numero minimo di variabili che, modificate con i valori presi da un serbatoio di donatori e tentando di prendere sempre il record esatto più somigliante, rendono corretto il record errato in esame.

Il serbatoio dei record donatori è costituito dal numero di record esatti, output del passaggio di check , determinato da un parametro di imputazione, per un massimo di 2000 record. Questo serbatoio, che viene rinnovato solo se esistono variabili definite "chiave", è l'unica fonte che fornisce i valori per la correzione delle variabili che fanno parte dell'insieme minimo di variabili da correggere.

Per prendere il record esatto più somigliante, il programma cerca la distanza minima tra il record da correggere e i record del serbatoio degli esatti, che viene rinnovato a rottura di strato determinato dalle variabili definite chiave, come segue: viene tentata prima l'imputazione ristretta, viene cioè cercato tra gli esatti un record con i valori delle variabili da non modificare uguali a quelle del record da correggere; se non è possibile trovare detto record nel serbatoio degli esatti, si tenta l'imputazione allargata, cioè trovare un record tra gli esatti con i valori "possibili" nelle variabili da non modificare, e infine, se anche questo tentativo d'imputazione non è riuscito, il record viene imputato sequenzialmente, una variabile da correggere alla volta, ricercando tra gli esatti un record compatibile, e se non trovato, forzando random tra i valori possibili, il valore esatto.

Il tempo necessario alla correzione dei record dipende dalla grandezza dell'insieme completo, dal tipo di imputazione prescelto, e ovviamente dal numero dei record errati.

I file utilizzati dal programma "genimpn2" sono:

5.3. Analisi dei risultati


Fig. 5.10 Le funzioni di analisi dei risultati




Eseguita la fase di imputazione, CONCORD permette un'analisi dei risultati tramite funzioni specifiche.
 
 

5.3.1. Tavole di verifica

Viene proposta una maschera (vedi fig. 5.11) nella quale scegliere, con doppio click del mouse, fino a tre variabili, tra quelle mostrate, che identifichino in modo univoco i record del file dati prima e dopo la correzione.

Nel caso non esistano, tra quelle mostrate, variabili che identifichino univocamente i record del file dati, ma siano registrati sui dati grezzi valori adatti allo scopo, è possibile definire, fino ad un massimo di tre, nuove variabili con posizione e lunghezza. In questo caso il sistema nominerà automaticamente le variabili con key1, key2 e key3.

Queste variabili servono ad accoppiare il file dei dati grezzi, input della fase di check, con un file ottenuto dai dati corretti e dai dati esatti in modo da poter evidenziare le variazioni subite. Per questo motivo, i record devono essere identificabili in tutti gli archivi.

Se non esistono valori, e quindi variabili, nel file dei dati grezzi, che identifichino in modo univoco i record da sottoporre a check e correzione, è possibile utilizzare un programma di utilità, (vedi §8.1.2) per creare una variabile di numerazione adatta allo scopo e numerare i record del file di input prima del passaggio di check.

Esempio:sia dato un file con i seguenti record:

               1___5____0____5_
record 1 0100100111222345
record 2 0100200304222354
record 3 0100300302232322
record 4 0100400102043421

con definite variabili a posizione 6 lunga 3, posizione 9 lunga 1, 10 lunga 2 e 15 lunga 2; non esistendo variabili che identifichino in modo univoco il record possiamo però definirne una con posizione 3 e lunghezza 3.

Se i dati invece fossero:

               1___5____0____5_
record 1 0100100111222345
record 2 0100100304222354
record 3 0100300302232322
record 4 0100300102043421

non avremmo nessuna zona dei record che li possa identificare univocamente; dobbiamo perciò, prima dei passaggi di check e correzione, numerare con l'apposita funzione nei programmi di utilità (vedi § 8.1.2), i record a posizione 17 per 1 carattere e, una volta effettuati i passaggi di controllo e correzione, definire una variabile a posizione 17 lunga 1 che serva all'accoppiamento dei dati per le tavole di verifica.

Le tavole di verifica sono ottenute con procedure SAS quali SORT, MERGE e FREQ e in output si avranno la distribuzione delle frequenze per tutte le variabili definite, e la distribuzione incrociata di tutte le variabili definite tra il file dei dati grezzi, prima delle fasi di controllo e correzione, e il file dei record esatti più quello dei record corretti.

Dal menu a tendina "File":

"Save and run": esegue l'elaborazione attraverso una macro SAS che sviluppa gli incroci per tutte le variabili ed esce.
"Exit": esce senza elaborare.
"Run source file": esegue l'elaborazione dei programmi generati dall'apposita funzione, sotto descritta, ed esce. Questa scelta è possibile solo se è stato generato il sorgente SAS.
Dal menu "Funzioni": "Genera SAS source": dopo aver indicato le variabili è possibile generare, nella cartella di progetto, i sorgenti dei programmi SAS necessari all'elaborazione. Questa opzione permette all'utente di modificare, eventualmente, i sorgenti SAS per ottenere una elaborazione personalizzata, eliminando gli incroci per le variabili non interessanti.
"Clear": annulla tutte le variabili inserite ripristinando i campi.

Fig. 5.11 La maschera per le funzioni di verifica



5.3.2. Grafici

Con questa funzione è possibile ottenere, a video, dei grafici.
Sono possibili le seguenti scelte:

5.4. Errori di esecuzione

I seguenti errori bloccano i programmi durante l'esecuzione.
 
 
Programma
Errore
Causa
contreg  (controllo delle regole) Matrice troppo larga Superati i limiti di memoria
genreg (controllo delle regole e generazione minimal-set ) L'ampiezza dei domini > 1500 caratteri Superati i limiti di memoria
Manca il file delle regole Non esiste il file REGOLE.dat
VARIABILI DA GESTIRE > 500 Superato il limite delle variabili
MATRICE TROPPO GRANDE Il numero degli edit espliciti > 2000
Variabile xx nella regola yy errata La variabile non esiste in VARDOM.dat
Regola con una sola variabile La regola deve avere al minimo 2 variabili
edit con variabili uguali (lista errata?) Nella lista esiste una variabile presente anche nella regola
Valore vv della variabile xx nella regola yy errata Valore fuori dominio
Edit contraddittori Regole in contraddizione tra loro
derivaz  (derivazione edit impliciti) TROPPI EDIT DELLA STESSA CLASSE EQUIVALENZA Il numero di edit ha superato i limiti previsti
TROPPE CLASSI DI EQUIVALENZA Il numero delle classi ha superato i limiti previsti
TROPPI EDIT GENERATI Il numero di edit ha superato i limiti previsti
EDIT DEGENERE,
edit generati da edit contraddittori,
edit contraddittori
edit xx degenere per unione uguali a meno di uno
L'edit  risultante dalla generazione ha una  sola   variabile. Nella matrice iniziale - minimal set - ci sono edit generati da regole contraddittorie; è possibile risalire agli edit espliciti la cui unione ha formato un edit degenere (con una sola variabile) tramite i file GENER.dat e COMPLETO.dat ove è indicata sia la variabile generatrice che gli edit uniti tra loro (gli edit tra parentesi su COMPLETO o con -9999 su GENER sono stati eliminati, perché ridondanti, da nuovi edit) vedi §5.2.3.
genckf  (check dei dati grezzi) MANCA IL FILE DELLE VARIABILI Non esiste il file VARDOM.dat
MANCA IL FILE DELLE REGOLE Non esiste il file REGOLE.dat
NON ESISTE IL FILE DATI INPUT Non esiste il file DATI.dat
RECORD > 5000 CARATTERI Il record in input > limite previsto
genimpn2 (imputazione) solo forzature per strato xx senza esatti Per lo strato xx non esistono esatti nel serbatoio. Diminuire le variabili strato
MANCA FILE DELLE VARIABILI Non esiste il file VARDOM
Troppi domini. Matrice insufficiente Superati i limiti di programma
TROPPI EDIT. Matrice insufficiente Superati i limiti di programma
MANCA INSIEME COMPLETO - fatta la derivazione? Non esiste il file MAXICE
TROPPI EDIT. Matrice insufficiente Superati i limiti di memoria del programma
TROPPI CAMPI CHIAVE Sono state definite più di 5 variabili chiave
RECORD > 5000 CARATTERI Il record in input è troppo lungo
NON ESISTE IL FILE ERRATI Non è stata effettuata la fase di check o i dati sono tutti esatti
NON ESISTE IL FILE ESATTI Tutti i dati dalla fase di check sono errati

  5.5. L'integrazione verso l'approccio deterministico

Le funzioni che permettono l'integrazione automatica, dall'approccio di correzione probabilistica all'approccio di correzione deterministica, si trovano nella definizione delle variabili e nella definizione delle regole. In ognuna di queste due fasi di definizione è disponibile dal menu a tendina una funzione di "export verso deterministico" che permette di generare automaticamente i file ASCII, formattati come necessario, per i programmi eseguiti nell'approccio deterministico.

Nel capitolo ESEMPIO di APPLICAZIONE sono elencati ed eseguiti tutti passi necessari alla completa integrazione tra i tre metodi di correzione.

DEFINIZIONE delle VARIABILI (vedi §5.1.1):

Usando la funzione di "export" nella definizione delle variabili si otterrà un file formattato con le stesse variabili pronte per essere utilizzate dal modulo deterministico e, particolarmente, con il tipo di variabile impostato ad alfabetico "A".

DEFINIZIONE delle REGOLE (vedi §5.1.3):

Usando la funzione di "export" da "File" nella definizione delle regole (vedi fig.5.12), funzione attiva solo dopo avere effettuato il controllo delle regole, si otterranno invece:

Per sfruttare l'integrazione automatica, una volta utilizzata la suddetta funzione dalla definizione delle regole nell'approccio probabilistico, basterà, quindi: Poi, nelle funzioni di definizione delle variabili, liste e regole di controllo si dovranno importare i relativi file dalla cartella di progetto e salvarli con la scelta di "Save and exit".
 


Fig 5.12 La scelta di export per l'integrazione verso deterministico